
///////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2002, Perry L. Miller IV
//  All rights reserved.
//  BSD License: http://www.opensource.org/licenses/bsd-license.html
//
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
//
//  Dynamic library exceptions.
//
///////////////////////////////////////////////////////////////////////////////

#ifndef _USUL_DYNAMIC_LOAD_LIBRARY_EXCEPTION_CLASSES_H_
#define _USUL_DYNAMIC_LOAD_LIBRARY_EXCEPTION_CLASSES_H_

#include <stdexcept>


namespace Usul {
namespace DLL {
namespace Exceptions {


///////////////////////////////////////////////////////////////////////////////
//
//  Base class for DLL-related exceptions.
//
///////////////////////////////////////////////////////////////////////////////

struct Exception : public std::runtime_error
{
  Exception ( const std::string &what ) : std::runtime_error ( what ){}
};


///////////////////////////////////////////////////////////////////////////////
//
//  Exception for when a library does not load.
//
///////////////////////////////////////////////////////////////////////////////

struct FailedToLoad : public Exception
{
  FailedToLoad ( const std::string &what ) : Exception ( what ){}
};


///////////////////////////////////////////////////////////////////////////////
//
//  Exception for when the filename was not found.
//
///////////////////////////////////////////////////////////////////////////////

struct FailedToGetFilename : public Exception
{
  FailedToGetFilename ( const std::string &what ) : Exception ( what ){}
};


} // namespace Exceptions
} // namespace DLL
} // namespace Usul


#endif // _USUL_DYNAMIC_LOAD_LIBRARY_EXCEPTION_CLASSES_H_
